Level 0 | Level 1 | Level 2 | Level 3 | Level 4 |
Level 5 | Level 6 | Level 7 | Level 8 | Level 9 |
Level 10 | Level 11 | Level 12 | Level 13 | Level 14 |
Egypt is a puzzel game that gets rather hard at the end where it kicks you totally. This game also has Egypt sounding music
and is rather cool sounding. This NSF is rather hard to rip, took me quite awhile to figure it out and the solution wasn't
as hard as I thought. When you rip the NSF and find the right init and play addresses it crashes in some players and won't
work in others. When you load the game up in a emulator and set a write for $4000 - $4009 and you end up seeing the writes
to the sound registers in the WRAM area. The first thing you should check is if these memory addresses are being initialized
in the init code and at the right time. So I shall show you the code here that is in the rom.
$01D8:8D 00 40 STA $4000 = #$FF $01DB:60 RTS
This code is used over and over again and the sound register address is changed a lot. 8D 00 40 the 00 byte is changed all
the time and is updated in the play code thousands of times. You probally know by now that the init code initializes memory
addresses and you need to trace the init code once you find it. I would check the sound registers first when you have them
in the WRAM area and then go from there. In this case the sound registers are not being initialized and so you have to do
them manually. So you need to make a loop to initialize these addresses. A countdown decrement loop might be best in this
case. You should use the Y register and not the X register because the X register is used most often. Also you need to check
the code to see that this routine doesnt mess anything else up by using the Y register. So here is the code to use and some
data to go along with it.
FF70 48 PHA FF71 A0 04 LDY #04 FF73 B9 8CAD LDA AD8C,Y FF76 99 D701 STA 01D7,Y FF79 88 DEY FF7A D0 F7 BNE $FF73 FF7C 68 PLA FF7D 4C 6FB7 JMP B76F .db 60,40,00,8D
You can place the code wherever you want. However this is where I placed the code. And so this initializes the addresses and
you can do this with other games as well that has register writes in WRAM. You can also initialize any other code that ends up here in WRAM in the same way. This is a simple level and so ends
here.